home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / hewin / ccisrc / ish.cci < prev    next >
Text File  |  1993-11-30  |  8KB  |  281 lines

  1. /*************************************************************************
  2. *    "ish.cci" : ish file converter サポート用
  3. *************************************************************************/
  4.  
  5. #define    _ISH_MD_S    0
  6. #define    _ISH_MD_7    1
  7. #define    _ISH_MD_8    2
  8. #define    _ISH_MD_N    3
  9.  
  10. #define    _ISH_OS_MSDOS    0
  11. #define    _ISH_OS_UNIX    1
  12. #define    _ISH_OS_MAC        2
  13. #define    _ISH_OS_CPM        3
  14. #define    _ISH_OS_OS9        4
  15. #define    _ISH_OS_OTHER    5
  16. #define    _ISH_OS_ALL        6
  17.  
  18. int        _ish_md = _ISH_MD_S;
  19. int        _ish_os = _ISH_OS_MSDOS;
  20. int        _ish_mv = 0;
  21.  
  22. int        _ish_setMd()
  23. {
  24.     int        ret;
  25.     char    *obj;
  26.     char    *mnu;
  27.  
  28.     obj = MNU_alloc(4);
  29.     MNU_setObj(obj, 0, MNU_NOR, 'S', " shift jis " , NULL, _ISH_MD_S, NULL, NULL );
  30.     MNU_setObj(obj, 1, MNU_NOR, '7', " jis 7"      , NULL, _ISH_MD_7, NULL, NULL );
  31.     MNU_setObj(obj, 2, MNU_NOR, '8', " jis 8"      , NULL, _ISH_MD_8, NULL, NULL );
  32.     MNU_setObj(obj, 3, MNU_NOR, 'N', " non-kana"   , NULL, _ISH_MD_N, NULL, NULL );
  33.     mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME,
  34.         MNUATT_EXIT, obj, "ISH 作成モード" );
  35.     ret = MNU_start ( mnu );
  36.     MNU_close(mnu);
  37.     MNU_free(obj);
  38.     if ( ret >= 0 )
  39.         _ish_md = ret;
  40.     return (0);
  41. }
  42.  
  43. int        _ish_setOs()
  44. {
  45.     int        ret;
  46.     char    *obj;
  47.     char    *mnu;
  48.  
  49.     obj = MNU_alloc(7);
  50.     MNU_setObj(obj, 0, MNU_NOR, 'D', " MS-DOS " , NULL, _ISH_OS_MSDOS, NULL, NULL );
  51.     MNU_setObj(obj, 1, MNU_NOR, 'U', " UNIX"    , NULL, _ISH_OS_UNIX , NULL, NULL );
  52.     MNU_setObj(obj, 2, MNU_NOR, 'M', " Mac"     , NULL, _ISH_OS_MAC  , NULL, NULL );
  53.     MNU_setObj(obj, 3, MNU_NOR, 'C', " CP/M"    , NULL, _ISH_OS_CPM  , NULL, NULL );
  54.     MNU_setObj(obj, 4, MNU_NOR, '9', " OS-9"    , NULL, _ISH_OS_OS9  , NULL, NULL );
  55.     MNU_setObj(obj, 5, MNU_NOR, 'O', " other"   , NULL, _ISH_OS_OTHER, NULL, NULL );
  56.     MNU_setObj(obj, 6, MNU_NOR, 'A', " all"     , NULL, _ISH_OS_ALL  , NULL, NULL );
  57.  
  58.     mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME,
  59.         MNUATT_EXIT, obj, "ISH OS 種別" );
  60.     ret = MNU_start ( mnu );
  61.     MNU_close(mnu);
  62.     MNU_free(obj);
  63.     if ( ret >= 0 )
  64.         _ish_os = ret;
  65.     return (0);
  66. }
  67.  
  68. int        _ish_setMv()
  69. {
  70.     int        ret;
  71.     char    *dlg;
  72.     char    tmp[16], mv[16];
  73.  
  74.     if ( _ish_mv == 0 )
  75.         strcpy( mv, "off");
  76.     else
  77.         sprintf( mv,"%d", mv );
  78.     dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
  79.          "    1ファイルの行数を入力してください(100~9999)。  \n現在:%s",
  80.          mv );
  81.     DLG_getsSetTitle( dlg, "ISH マルチボリューム設定" );
  82.     tmp[0] = 0;
  83.     ret = DLG_getsStart( dlg, 15, tmp );
  84.     DLG_getsClose(dlg);
  85.     if ( ret >= 0 )
  86.     {    ret = atoi(tmp);    /* BugFix ver.1.01c#07 1993/08/21 */
  87.         if ( ret > 99 && ret < 10000 )
  88.             _ish_mv = ret;
  89.     }
  90.     return (0);
  91. }
  92.  
  93. int        _ish_make( char *dcn )
  94. {
  95.     int        ret;
  96.     char    *fdl;
  97.     char    ish[128], dir[128], cmd[256];
  98.     char    tmp[128];
  99.     char    *md, *os, mv[16];
  100.  
  101.     /* オプション作成    */
  102.     switch ( _ish_md )
  103.     {
  104.         case _ISH_MD_S:    md = "/ss";    break;
  105.         case _ISH_MD_7:    md = "/s7";    break;
  106.         case _ISH_MD_8:    md = "/s8";    break;
  107.         case _ISH_MD_N:    md = "/sn";    break;
  108.     }
  109.     switch ( _ish_os )
  110.     {
  111.         case _ISH_OS_MSDOS:    os = "/m" ;    break;
  112.         case _ISH_OS_UNIX:    os = "/u" ;    break;
  113.         case _ISH_OS_MAC:    os = "/ma";    break;
  114.         case _ISH_OS_CPM:    os = "/c" ;    break;
  115.         case _ISH_OS_OS9:    os = "/9" ;    break;
  116.         case _ISH_OS_OTHER:    os = "/?" ;    break;
  117.         case _ISH_OS_ALL:    os = "/*" ;    break;
  118.     }
  119.     if ( _ish_mv ==  0 )
  120.         mv[0] = '\0';
  121.     else
  122.         sprintf( mv,"/mv %d", _ish_mv );
  123.  
  124.     if ( (fdl = FDL_open(0)) == NULL )
  125.         return (ERR);
  126.     FDL_set_title( fdl, "ISH ファイル作成");
  127.     FDL_set_wildcard( fdl, "*.*");
  128.     SYL_puts(C_HGREEN,"ISH ファイルにしたいファイルを選択してください。");
  129.     if ( FDL_start(fdl) == NORMAL && FS_setFullPathname( tmp, FDL_get_filename(fdl)) == NORMAL )
  130.     {
  131.         FS_unix2dos( ish, tmp );
  132.         ret = NORMAL;
  133.     } else
  134.         ret = ERR;
  135.     if ( ret == NORMAL )
  136.     {
  137.         DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  138.             C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
  139.             3, "  %s : \n    ISH ファイルを作成するディレクトリに移動してください。  ",
  140.             ish );
  141.         FDL_set_defaultFilename( fdl, "");
  142.         FDL_set_title( fdl, "ISH : ディレクトリ指定");
  143.         SYL_puts( C_HGREEN,
  144.             "ISH ファイルを作成したいディレクトリに移動してください。");
  145.         ret = FDL_start(fdl);
  146.         if ( ret == NORMAL )
  147.         {
  148.             sprintf( tmp, "%c:/%s", FDL_get_drv(fdl) + 'A', FDL_get_whare(fdl) );
  149.             FS_unix2dos( dir, tmp );
  150.             FDL_close(fdl);
  151.             sprintf( cmd, "ish %s %s %s %s %s", ish, md, os, dir, mv );
  152.             DCN_puts( dcn, cmd );
  153.             DCN_exec( dcn, 0, cmd );
  154.             ret = DCNCMD_PROMPT;
  155.         } else
  156.             FDL_close(fdl);
  157.     } else
  158.         FDL_close(fdl);
  159.  
  160.     SYL_clear();
  161.     return (ret);
  162. }
  163.  
  164. int        _ish_restore( char *dcn )
  165. {
  166.     int        ret;
  167.     char    *fdl;
  168.     char    ish[128], cmd[256], tmp[128];
  169.  
  170.     if ( (fdl = FDL_open(0)) == NULL )
  171.         return (ERR);
  172.     FDL_set_title( fdl, "ISH ファイルの復元");
  173.     FDL_set_wildcard( fdl, "*.*");
  174.     SYL_puts(C_HGREEN,"復元したいファイルを指定してください。");
  175.     if ( FDL_start(fdl) == NORMAL && FS_setFullPathname( ish, FDL_get_filename(fdl)) == NORMAL )
  176.         ret = NORMAL;
  177.     else
  178.         ret = ERR;
  179.     if ( ret == NORMAL )
  180.     {
  181.         DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  182.             C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
  183.             3, "  %s : \n復元先するディレクトリに移動してください。  ",
  184.             ish );
  185.         FDL_set_defaultFilename( fdl, "");
  186.         FDL_set_title( fdl, "ISH : 復元先ディレクトリの指定");
  187.         SYL_puts(C_HGREEN,
  188.             "ISH ファイルを復元したいディレクトリに移動してください。");
  189.         ret = FDL_start(fdl);
  190.         FDL_close(fdl);
  191.         if ( ret == NORMAL )
  192.         {
  193.             FS_unix2dos( tmp, ish );
  194.             sprintf( cmd, "ish %s /r", tmp );
  195.             DCN_puts( dcn, cmd );
  196.             DCN_exec( dcn, 0, cmd );
  197.             ret = DCNCMD_PROMPT;
  198.         }
  199.     } else
  200.         FDL_close(fdl);
  201.  
  202.     SYL_clear();
  203.     return (ret);
  204. }
  205.  
  206. int        _ish_setobj( char *obj )
  207. {
  208.     char    *md, *os, mv[16];
  209.  
  210.     switch ( _ish_md )
  211.     {
  212.         case _ISH_MD_S:    md = "shift jis";    break;
  213.         case _ISH_MD_7:    md = "jis7"     ;    break;
  214.         case _ISH_MD_8:    md = "jis8"     ;    break;
  215.         case _ISH_MD_N:    md = "non-kana" ;    break;
  216.     }
  217.     switch ( _ish_os )
  218.     {
  219.         case _ISH_OS_MSDOS:    os = "MS-DOS";    break;
  220.         case _ISH_OS_UNIX:    os = "UNIX"  ;    break;
  221.         case _ISH_OS_MAC:    os = "Mac"   ;    break;
  222.         case _ISH_OS_CPM:    os = "CP/M"  ;    break;
  223.         case _ISH_OS_OS9:    os = "OS-9"  ;    break;
  224.         case _ISH_OS_OTHER:    os = "other" ;    break;
  225.         case _ISH_OS_ALL:    os = "all"   ;    break;
  226.     }
  227.     if ( _ish_mv ==  0 )
  228.         strcpy( mv, "off");
  229.     else
  230.         sprintf( mv, "%d", _ish_mv );
  231.  
  232.     MNU_setObj(obj, 0, MNU_NOR, 'I', " ISH ファイルの作成 "  , NULL, 1, NULL        , NULL );
  233.     MNU_setObj(obj, 1, MNU_STR, 'S', " 作成モード       %s " , md  , 0, "_ish_setMd", NULL );
  234.     MNU_setObj(obj, 2, MNU_STR, 'O', " OS種別           %s " , os  , 0, "_ish_setOs", NULL );
  235.     MNU_setObj(obj, 3, MNU_STR, 'M', " マルチボリューム %s " , mv  , 0, "_ish_setMv", NULL );
  236.     MNU_setObj(obj, 4, MNU_BLK,  0 ,  NULL                   , NULL, 0, NULL        , NULL );
  237.     MNU_setObj(obj, 5, MNU_NOR, 'R', " ISH ファイルの復元 "  , NULL, 2, NULL        , NULL );
  238.  
  239.     return (0);
  240. }
  241.  
  242. int        dcn_ish_menu( char *dcn )
  243. {
  244.     int        ret;
  245.     char    *obj;
  246.     char    *mnu;
  247.  
  248.     obj = MNU_alloc(6);
  249.     _ish_setobj(obj);
  250.     mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME,
  251.         MNUATT_EXIT, obj, "ISH MENU" );
  252.     while ( 1 )
  253.     {
  254.         ret = MNU_start ( mnu );
  255.         if ( ret != 0 )
  256.             break;
  257.         _ish_setobj(obj);
  258.     }
  259.     MNU_close(mnu);
  260.     MNU_free(obj);
  261.     switch ( ret )
  262.     {
  263.         case 1:        return _ish_make(dcn);        /* 作成            */
  264.         case 2:        return _ish_restore(dcn);    /* 復元            */
  265.     }
  266.     return (ERR);
  267. }
  268.  
  269. #undef    _ISH_MD_S
  270. #undef    _ISH_MD_7
  271. #undef    _ISH_MD_8
  272. #undef    _ISH_MD_N
  273.  
  274. #undef    _ISH_OS_MSDOS
  275. #undef    _ISH_OS_UNIX
  276. #undef    _ISH_OS_MAC
  277. #undef    _ISH_OS_CPM
  278. #undef    _ISH_OS_OS9
  279. #undef    _ISH_OS_OTHER
  280. #undef    _ISH_OS_ALL
  281.